This program examines tracts that only partially intersect with community districts.
library(sf)
## Linking to GEOS 3.9.1, GDAL 3.2.1, PROJ 7.2.1; sf_use_s2() is TRUE
library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v ggplot2 3.3.5 v purrr 0.3.4
## v tibble 3.1.6 v dplyr 1.0.8
## v tidyr 1.2.0 v stringr 1.4.0
## v readr 2.1.2 v forcats 0.5.1
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library(magrittr)
##
## Attaching package: 'magrittr'
## The following object is masked from 'package:purrr':
##
## set_names
## The following object is masked from 'package:tidyr':
##
## extract
path_name <- "../data/"
load(paste0(path_name, "bl", ".RData"))
glimpse(bl)
## Rows: 39,903
## Columns: 4
## $ bl_id <chr> "200910518012010", "200910514003006", "200910515002005", "200~
## $ bl_name <chr> "Block 2010", "Block 3006", "Block 2005", "Block 1009", "Bloc~
## $ bl_area <dbl> 38500.823, 51711.677, 104537.047, 73933.762, 95854.528, 19934~
## $ geometry <POLYGON [°]> POLYGON ((-94.64213 38.9774..., POLYGON ((-94.63966 3~
load(paste0(path_name, "cd", ".RData"))
glimpse(cd)
## Rows: 59
## Columns: 4
## $ cd_id <dbl> 106, 108, 113, 102, 129, 116, 114, 101, 105, 103, 107, 109, 1~
## $ cd_name <chr> "East Side", "Old Northeast", "Greater Downtown", "Blue Valle~
## $ cd_area <dbl> 281713850, 118237219, 181920811, 216842678, 412671242, 264282~
## $ geometry <POLYGON [°]> POLYGON ((-94.52337 39.0941..., POLYGON ((-94.50777 3~
load(paste0(path_name, "icd", ".RData"))
glimpse(icd)
## Rows: 15,748
## Columns: 19
## $ bl_id <chr> "290950023002014", "290950063002017", "290950022003001",~
## $ bl_name <chr> "Block 2014", "Block 2017", "Block 3001", "Block 3004", ~
## $ bl_area <dbl> 14983.197, 9597.627, 18151.722, 18380.541, 17691.230, 17~
## $ st_id <chr> "29", "29", "29", "29", "29", "29", "29", "29", "29", "2~
## $ co_id <chr> "29095", "29095", "29095", "29095", "29095", "29095", "2~
## $ tr_id <chr> "29095002300", "29095006300", "29095002200", "2909500220~
## $ bg_id <chr> "290950023002", "290950063002", "290950022003", "2909500~
## $ people <chr> "62", "0", "22", "26", "42", "49", "43", "0", "12", "20"~
## $ housing_units <chr> "18", "0", "9", "18", "22", "22", "14", "0", "1", "10", ~
## $ land_area <chr> "14996", "9606", "18167", "18396", "17706", "17473", "32~
## $ water_area <chr> "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "~
## $ block_lat <chr> "+39.0894021", "+39.0439974", "+39.0932160", "+39.093298~
## $ block_lon <chr> "-094.5318307", "-094.5610343", "-094.5240738", "-094.52~
## $ cd_id <dbl> 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 1~
## $ cd_name <chr> "East Side", "East Side", "East Side", "East Side", "Eas~
## $ cd_area <dbl> 281713850, 281713850, 281713850, 281713850, 281713850, 2~
## $ geometry <GEOMETRY [°]> POLYGON ((-94.5324 39.0887,..., POLYGON ((-94.5~
## $ in_area <dbl> 14983.19694, 9597.62653, 18151.72239, 18380.54058, 17691~
## $ pct_in <dbl> 100.0000000, 100.0000000, 100.0000000, 100.0000000, 100.~
load(paste0(path_name, "red", ".RData"))
glimpse(red)
## Rows: 39,903
## Columns: 11
## $ st_id <chr> "20", "20", "20", "20", "20", "20", "20", "20", "20", "2~
## $ co_id <chr> "20091", "20091", "20091", "20091", "20091", "20091", "2~
## $ tr_id <chr> "20091050000", "20091050000", "20091050000", "2009105000~
## $ bg_id <chr> "200910500001", "200910500001", "200910500001", "2009105~
## $ bl_id <chr> "200910500001000", "200910500001001", "200910500001002",~
## $ people <chr> "52", "47", "51", "58", "138", "68", "35", "81", "39", "~
## $ housing_units <chr> "33", "29", "27", "26", "70", "34", "18", "28", "12", "1~
## $ land_area <chr> "27826", "26904", "26385", "27075", "74489", "58378", "2~
## $ water_area <chr> "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "~
## $ block_lat <chr> "+39.0427053", "+39.0427081", "+39.0426993", "+39.042717~
## $ block_lon <chr> "-094.6217603", "-094.6228101", "-094.6238297", "-094.62~
load(paste0(path_name, "bg", ".RData"))
glimpse(bg)
## Rows: 1,684
## Columns: 4
## $ bg_id <chr> "201039819003", "201030714004", "201030711041", "201030712051~
## $ bg_name <chr> "Block Group 3", "Block Group 4", "Block Group 1", "Block Gro~
## $ bg_area <dbl> 984975.5, 36602869.0, 18313082.5, 26007918.3, 11448660.8, 243~
## $ geometry <POLYGON [°]> POLYGON ((-94.94756 39.3373..., POLYGON ((-95.18756 3~
load(paste0(path_name, "co", ".RData"))
clist <- c(
"20091",
"20103",
"20209",
"29037",
"29047",
"29095",
"29165")
co %>%
filter(GEOID %in% clist) -> co
glimpse(co)
## Rows: 7
## Columns: 19
## $ STATEFP <chr> "29", "29", "20", "20", "29", "29", "20"
## $ COUNTYFP <chr> "037", "165", "091", "209", "095", "047", "103"
## $ COUNTYNS <chr> "00758473", "00758537", "00485010", "00485065", "00758502", "~
## $ GEOID <chr> "29037", "29165", "20091", "20209", "29095", "29047", "20103"
## $ NAME <chr> "Cass", "Platte", "Johnson", "Wyandotte", "Jackson", "Clay", ~
## $ NAMELSAD <chr> "Cass County", "Platte County", "Johnson County", "Wyandotte ~
## $ LSAD <chr> "06", "06", "06", "06", "06", "06", "06"
## $ CLASSFP <chr> "H1", "H1", "H1", "H6", "H1", "H1", "H1"
## $ MTFCC <chr> "G4020", "G4020", "G4020", "G4020", "G4020", "G4020", "G4020"
## $ CSAFP <chr> "312", "312", "312", "312", "312", "312", "312"
## $ CBSAFP <chr> "28140", "28140", "28140", "28140", "28140", "28140", "28140"
## $ METDIVFP <chr> NA, NA, NA, NA, NA, NA, NA
## $ FUNCSTAT <chr> "A", "A", "A", "C", "A", "A", "A"
## $ ALAND <dbl> 1804223313, 1087283058, 1226679688, 392739381, 1565698757, 10~
## $ AWATER <dbl> 14963188, 16949451, 16319024, 11801597, 30621016, 28508804, 1~
## $ INTPTLAT <chr> "+38.6464737", "+39.3786900", "+38.8839065", "+39.1153842", "~
## $ INTPTLON <chr> "-094.3545467", "-094.7614765", "-094.8223295", "-094.7630866~
## $ geometry <MULTIPOLYGON [°]> MULTIPOLYGON (((-94.11966 3..., MULTIPOLYGON (((-94.65596 3..~
## $ label <chr> "Cass", "Platte", "Johnson", "Wyandotte", "Jackson", "Clay", ~
icd %>%
tibble %>%
distinct(cd_id) %>%
arrange(cd_id) %>%
pull(cd_id) -> cd_list
county_plot <- function(co, cd, i) {
cd %<>% filter(cd_id==i)
ggplot(co, aes()) +
geom_sf(
fill=NA,
color="darkgreen") +
ggtitle(cd$cd_name) +
geom_sf(
data=cd,
aes(),
fill="white",
color="darkred") -> plot_co
plot(plot_co)
}
extract_bg <- function(icd, i) {
icd %>%
tibble %>%
filter(cd_id==i) %>%
filter(pct_in > 2) %>%
distinct(bg_id) %>%
arrange(bg_id) %>%
pull(bg_id)
}
extract_bl <- function(icd, i, j) {
icd %>%
tibble %>%
filter(cd_id==i) %>%
filter(bg_id==j) %>%
filter(pct_in > 2) %>%
distinct(bl_id) %>%
arrange(bl_id) %>%
pull(bl_id)
}
bg_plot <- function(cd, i, bg, j, icd, bl_list) {
cd_filter <- cd$cd_id==i
bg_filter <- bg$bg_id==j
bl_filter <- icd$bg_id==j & icd$bl_id %in% bl_list
s1 <- filter(cd, cd_filter)
s2 <- filter(bg, bg_filter)
s3 <- filter(icd, bl_filter)
ggplot(s1, aes()) +
geom_sf(
fill="white",
color="darkred",
size=2) +
geom_sf(
data=s2,
aes(),
fill="lightgreen",
color="darkgreen") +
ggtitle(j) +
geom_sf(
data=s3,
aes(),
fill="pink",
color="darkred") -> plot_bg
plot(plot_bg)
}
for (i in cd_list[1:5]) {
county_plot(co, cd, i)
bg_list <- extract_bg(icd, i)
for (j in bg_list) {
bl_list <- extract_bl(icd, i, j)
bg_plot(cd, i, bg, j, icd, bl_list)
}
}